import QtQuick 2.12
import QtQuick.Window 2.12

//注意！！ qml打包在qrc中，需要重新编译生成资源文件，新的更改才会生效 而使用相对路径从磁盘读取qml，无需重新编译，qml的更改即可生效
Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    Rectangle{
        //1.访问父对象属性
        width: parent.width - 20

        //2.使用JS内置Math
        //width: Math.min(parent.width, parent.height)

        //3.使用三目表达式
        //width: parent.width > 100 ? parent.width : parent.width /2

        //4.if-else 代码块中的 return 关键字可有可无
        //width: {
        //    if (parent.width > 300)
        //        return parent.width/3
        //    else
        //        return parent.width / 2
        //}

        //5.具有绑定的属性将根据需要自动更新属性值，
        // 但是如果该属性在稍后被赋值一个静态值，原有的绑定关系将会取消，如下代码
        // 在空格键被按下后，矩形的宽度被赋值为一个净值，再改变父窗口的大小，该矩形宽度也不会再变化
        focus: true
        //Keys.onSpacePressed: {
        //    width = parent.width / 2
        //}

        //6.如果是需要给width一个新的表达式建立动态绑定关系，那么新的绑定表达式必须被包裹在 Qt.binding() 函数中：
        //  这样在按下空格键的时候，改变父窗口，矩形会跟随变化，宽度始终保持以下关系
        Keys.onSpacePressed: {
            width = Qt.binding(function() { return parent.width / 2 })
        }


        height:  parent.height - 20

        color: "#80ffcc"
        anchors.centerIn: parent
        radius: 10
    }
}
